Information on group members:
import numpy as np
import matplotlib.pyplot as plt
import random
import pandas as pd
import warnings
from tqdm import tqdm
warnings.filterwarnings("ignore")
def getF(P):
M = len(P)
refPoints = [
[[0.7, 0.3], [0.2, 0.2], [0.3, 0.6], [0.7, 0.9], [0.35, 0.35], [0.6, 0.6], [0.2, 0.9]], #M = 2
[[0.7, 0.3, 0.5], [0.2, 0.2, 0.1], [0.3, 0.6, 0.9], [0.7, 0.9, 0.2], [0.35, 0.35, 0.35], [0.6, 0.6, 0.6], [0.2, 0.9, 0.4]], #M = 3
[[0.7, 0.3, 0.5, 0.9], [0.2, 0.2, 0.1, 0.2], [0.3, 0.6, 0.9, 0.5], [0.7, 0.9, 0.2, 0.4], [0.35, 0.35, 0.35, 0.35], [0.6, 0.6, 0.6, 0.6], [0.2, 0.9, 0.4, 0.1]], #M = 4
[[0.7, 0.3, 0.5, 0.9, 0.2], [0.2, 0.2, 0.1, 0.2, 0.6], [0.3, 0.6, 0.9, 0.5, 0.1], [0.7, 0.9, 0.2, 0.4, 0.9], [0.35, 0.35, 0.35, 0.35, 0.2], [0.6, 0.6, 0.6, 0.6, 0.9], [0.2, 0.9, 0.4, 0.1, 0.5]] #M = 5
]
PP = np.array(P)
v = 2.5*np.exp(-(5*np.linalg.norm(PP - np.array(refPoints[M-2][0])))**2)
v += 1.0*np.exp(-(6*np.linalg.norm(PP - np.array(refPoints[M-2][1])))**2)
v += 1.5*np.exp(-(6*np.linalg.norm( PP - np.array(refPoints[M-2][2])))**2)
v += 1.2*np.exp(-(3*np.linalg.norm( PP - np.array(refPoints[M-2][3])))**2)
v += 1.7*np.exp(-(14*np.linalg.norm( PP - np.array(refPoints[M-2][4])))**2)
v += 1.4*np.exp(-(6.5*np.linalg.norm( PP - np.array(refPoints[M-2][5])))**2)
v += 2.0*np.exp(-(10.0*np.linalg.norm( PP - np.array(refPoints[M-2][6])))**2)
return v
print(getF([0.7, 0.3, 0.5]))
2.5343274543723906
def generate_population(popsize, dims=None):
population = []
if dims is None:
for dim in [2, 3, 4, 5]:
population += [np.random.normal(size=dim) for _ in range(popsize//4)]
else:
population += [np.random.normal(size=dims) for _ in range(popsize)]
return sorted(population, key=getF, reverse=True)
def change_dimensions(gen):
if np.random.randint(0, 100) < 10:
if len(gen) == 2:
gen.append(np.random.normal())
elif len(gen) == 5:
gen.pop(np.random.choice(range(len(gen))))
else:
if np.random.randint(0, 100) < 50:
gen.append(np.random.normal())
else:
gen.pop(np.random.choice(range(len(gen))))
return gen
def mutate(gen, prob=50, div=10, change_dim=False):
gen = list(gen)
for idx in range(len(gen)):
if np.random.randint(0, 100) < prob:
gen[idx] += np.random.normal() / div
## change dimensions
if change_dim:
gen = change_dimensions(gen)
return np.array(gen)
def crossover(gen1, gen2):
cut_point = max(len(gen1), len(gen2)) // 2
gen1, gen2 = list(gen1), list(gen2)
child = gen1[:cut_point] + gen2[cut_point:] if np.random.randint(0, 100) < 50 else gen2[:cut_point] + gen1[cut_point:]
return np.array(child)
def tournament_selection(population, k):
tournament = random.choices(population, k=k)
return np.array(max(tournament, key=getF))
def evolve(population, popsize, tournament_size, _print=False, change_dim=False):
bests = []
prev_best_score = 0
counter = 0
while True:
## mutation of bad ones
for bad_gen in population[int(0.9*popsize):popsize][::-1]:
bad_gen = mutate(bad_gen, change_dim)
population.append(bad_gen)
## crossover
for _ in range(int(0.5*popsize)):
parent1 = tournament_selection(population, tournament_size)
parent2 = tournament_selection(population, tournament_size)
child = crossover(parent1, parent2)
population.append(child)
## mutation
for _ in range(int(0.5*popsize)):
winner = tournament_selection(population, tournament_size)
winner = mutate(winner, change_dim)
population.append(winner)
## some new random samples
population += generate_population(int(0.1*popsize))
population = sorted(population, key=getF, reverse=True)
population = population[:popsize]
best_score = getF(population[0])
bests.append(best_score)
if best_score == prev_best_score:
counter += 1
else:
counter = 0
prev_best_score = best_score
if _print:
print(f'Best gen: {population[0]}; score: {best_score}')
if counter > 100:
break
return bests
population = generate_population(100)
print(f'Best gen: {population[0]}, score: {getF(population[0])}')
_ = evolve(population, 100, 5, _print=True, change_dim=True)
Best gen: [0.16249393 0.89564664], score: 1.8560173611999966 Best gen: [0.16249393 0.89564664]; score: 1.8560173611999966 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.22024594 0.89564664]; score: 2.1185914554693515 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89564664]; score: 2.1645092154218233 Best gen: [0.20926374 0.89652864]; score: 2.164989696155189 Best gen: [0.20926374 0.89652864]; score: 2.164989696155189 Best gen: [0.20926374 0.89652864]; score: 2.164989696155189 Best gen: [0.20926374 0.89652864]; score: 2.164989696155189 Best gen: [0.20926374 0.89652864]; score: 2.164989696155189 Best gen: [0.20926374 0.89652864]; score: 2.164989696155189 Best gen: [0.20926374 0.89652864]; score: 2.164989696155189 Best gen: [0.20926374 0.89652864]; score: 2.164989696155189 Best gen: [0.20926374 0.89652864]; score: 2.164989696155189 Best gen: [0.20926374 0.89652864]; score: 2.164989696155189 Best gen: [0.20926374 0.89652864]; score: 2.164989696155189 Best gen: [0.20926374 0.89652864]; score: 2.164989696155189 Best gen: [0.20926374 0.89652864]; score: 2.164989696155189 Best gen: [0.63974192 0.36402125]; score: 2.2763139735333837 Best gen: [0.66373647 0.28799297]; score: 2.4711894906622005 Best gen: [0.66373647 0.28799297]; score: 2.4711894906622005 Best gen: [0.66373647 0.28799297]; score: 2.4711894906622005 Best gen: [0.66373647 0.28799297]; score: 2.4711894906622005 Best gen: [0.66373647 0.28799297]; score: 2.4711894906622005 Best gen: [0.66373647 0.28799297]; score: 2.4711894906622005 Best gen: [0.66373647 0.28799297]; score: 2.4711894906622005 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.66373647 0.31558897]; score: 2.498965849502964 Best gen: [0.67174351 0.31558897]; score: 2.528548975404434 Best gen: [0.67174351 0.31558897]; score: 2.528548975404434 Best gen: [0.67174351 0.31558897]; score: 2.528548975404434 Best gen: [0.67174351 0.31558897]; score: 2.528548975404434 Best gen: [0.67174351 0.31558897]; score: 2.528548975404434 Best gen: [0.67174351 0.31558897]; score: 2.528548975404434 Best gen: [0.67174351 0.31558897]; score: 2.528548975404434 Best gen: [0.67174351 0.31558897]; score: 2.528548975404434 Best gen: [0.67174351 0.31421768]; score: 2.5290356800511757 Best gen: [0.71413896 0.31421768]; score: 2.5554225360556893 Best gen: [0.71413896 0.31421768]; score: 2.5554225360556893 Best gen: [0.71413896 0.31421768]; score: 2.5554225360556893 Best gen: [0.71413896 0.31421768]; score: 2.5554225360556893 Best gen: [0.71413896 0.31421768]; score: 2.5554225360556893 Best gen: [0.71413896 0.31421768]; score: 2.5554225360556893 Best gen: [0.71413896 0.31421768]; score: 2.5554225360556893 Best gen: [0.71413896 0.31421768]; score: 2.5554225360556893 Best gen: [0.71413896 0.31421768]; score: 2.5554225360556893 Best gen: [0.71413896 0.31421768]; score: 2.5554225360556893 Best gen: [0.71413896 0.31105206]; score: 2.556675529807993 Best gen: [0.71413896 0.31105206]; score: 2.556675529807993 Best gen: [0.71413896 0.31105206]; score: 2.556675529807993 Best gen: [0.71413896 0.31105206]; score: 2.556675529807993 Best gen: [0.71413896 0.31105206]; score: 2.556675529807993 Best gen: [0.71413896 0.31105206]; score: 2.556675529807993 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.71413896 0.30861031]; score: 2.5569167133378254 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.70596532 0.30861031]; score: 2.5690353712212537 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.30861031]; score: 2.5712476849643506 Best gen: [0.69324268 0.31122767]; score: 2.571257486000921 Best gen: [0.69324268 0.31122767]; score: 2.571257486000921 Best gen: [0.69324268 0.31122767]; score: 2.571257486000921 Best gen: [0.69324268 0.31122767]; score: 2.571257486000921 Best gen: [0.69324268 0.31122767]; score: 2.571257486000921 Best gen: [0.69324268 0.31122767]; score: 2.571257486000921 Best gen: [0.69324268 0.31122767]; score: 2.571257486000921 Best gen: [0.69324268 0.31122767]; score: 2.571257486000921 Best gen: [0.69324268 0.31122767]; score: 2.571257486000921 Best gen: [0.69324268 0.31122767]; score: 2.571257486000921 Best gen: [0.69324268 0.31122767]; score: 2.571257486000921 Best gen: [0.69484495 0.31122767]; score: 2.572074501361523 Best gen: [0.69484495 0.31122767]; score: 2.572074501361523 Best gen: [0.69484495 0.31122767]; score: 2.572074501361523 Best gen: [0.69484495 0.31122767]; score: 2.572074501361523 Best gen: [0.69484495 0.31122767]; score: 2.572074501361523 Best gen: [0.69484495 0.31122767]; score: 2.572074501361523 Best gen: [0.69484495 0.31122767]; score: 2.572074501361523 Best gen: [0.69587387 0.31122767]; score: 2.5724291996794166 Best gen: [0.69587387 0.31122767]; score: 2.5724291996794166 Best gen: [0.69587387 0.31122767]; score: 2.5724291996794166 Best gen: [0.69587387 0.31122767]; score: 2.5724291996794166 Best gen: [0.69587387 0.31122767]; score: 2.5724291996794166 Best gen: [0.69587387 0.31122767]; score: 2.5724291996794166 Best gen: [0.69587387 0.31122767]; score: 2.5724291996794166 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.31122767]; score: 2.5727219429188954 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403 Best gen: [0.69865995 0.30987997]; score: 2.5728488178148403
population = generate_population(100, dims=2)
print(f'Best gen: {population[0]}, score: {getF(population[0])}')
_ = evolve(population, 100, 5, _print=True)
Best gen: [0.57870912 0.49640246], score: 1.8376210988207293 Best gen: [0.57870912 0.49640246]; score: 1.8376210988207293 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067 Best gen: [0.57870912 0.62900951]; score: 2.072682103411067
df = pd.DataFrame([])
def plot_comparisons(df, dims=None):
plt.rcParams["figure.figsize"] = (25,10)
plt.rcParams.update({'font.size': 18, 'font.family': 'Tahoma'})
results_avg = {}
results_len = {}
for popsize in tqdm(range(50, 250, 50)):
if not dims:
population = generate_population(popsize)
else:
population = generate_population(popsize, dims)
for tournament_size in [1, 2, 5, 10]:
temp_avg = []
temp_len = []
for _ in range(10):
if not dims:
res = evolve(population, popsize, tournament_size, change_dim=True)
else:
res = evolve(population, popsize, tournament_size)
temp_avg.append(res[-1])
temp_len.append(len(res))
results_avg[(popsize, tournament_size)] = sum(temp_avg) / len(temp_avg)
results_len[(popsize, tournament_size)] = sum(temp_len) / len(temp_len)
label = 'mixed dims' if not dims else f'{dims}D'
plt.bar(height=list(results_avg.values()), x=range(len(results_avg)))
plt.title(f"Best fitness comparison, {label}")
plt.xlabel("Parameters (popsize, k)")
plt.ylabel("Best fitness value")
plt.xticks(range(len(results_avg)), labels=list(results_avg.keys()), rotation = 90)
plt.show()
plt.bar(height=list(results_len.values()), x=range(len(results_len)))
plt.title(f"No. of iterations comparison, {label}")
plt.xlabel("Parameters (popsize, k)")
plt.ylabel("No. of iterations")
plt.xticks(range(len(results_len)), labels=list(results_len.keys()), rotation = 90)
plt.show()
df_temp = pd.DataFrame({f'Parameters {label}': list(results_avg.keys()),
f'Best fitness {label}': list(results_avg.values()),
f'Iterations {label}': list(results_len.values())})
return df_temp
df_temp = plot_comparisons(df=df)
df = pd.concat([df, df_temp], axis=1)
100%|███████████████████████████████████████████████████████████████████████████████████| 4/4 [42:06<00:00, 631.61s/it]
df
| Parameters mixed dims | Best fitness mixed dims | Iterations mixed dims | |
|---|---|---|---|
| 0 | (50, 1) | 2.572099 | 167.0 |
| 1 | (50, 2) | 2.572474 | 213.7 |
| 2 | (50, 5) | 2.572232 | 164.6 |
| 3 | (50, 10) | 2.571771 | 163.2 |
| 4 | (100, 1) | 2.572753 | 240.2 |
| 5 | (100, 2) | 2.572485 | 218.9 |
| 6 | (100, 5) | 2.572703 | 233.9 |
| 7 | (100, 10) | 2.572609 | 239.0 |
| 8 | (150, 1) | 2.572839 | 260.1 |
| 9 | (150, 2) | 2.572803 | 246.0 |
| 10 | (150, 5) | 2.572726 | 210.4 |
| 11 | (150, 10) | 2.572783 | 238.6 |
| 12 | (200, 1) | 2.572839 | 217.2 |
| 13 | (200, 2) | 2.572836 | 293.8 |
| 14 | (200, 5) | 2.572831 | 248.7 |
| 15 | (200, 10) | 2.572783 | 233.6 |
for dim in range(2, 6):
df_temp = plot_comparisons(df, dim)
df = pd.concat([df, df_temp], axis=1)
100%|███████████████████████████████████████████████████████████████████████████████████| 4/4 [20:18<00:00, 304.72s/it]
100%|███████████████████████████████████████████████████████████████████████████████████| 4/4 [21:17<00:00, 319.34s/it]
100%|███████████████████████████████████████████████████████████████████████████████████| 4/4 [21:06<00:00, 316.50s/it]
100%|███████████████████████████████████████████████████████████████████████████████████| 4/4 [22:05<00:00, 331.34s/it]
df
| Parameters mixed dims | Best fitness mixed dims | Iterations mixed dims | Parameters 2D | Best fitness 2D | Iterations 2D | Parameters 3D | Best fitness 3D | Iterations 3D | Parameters 4D | Best fitness 4D | Iterations 4D | Parameters 5D | Best fitness 5D | Iterations 5D | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | (50, 1) | 2.572099 | 167.0 | (50, 1) | 2.421950 | 118.7 | (50, 1) | 2.068911 | 130.3 | (50, 1) | 2.333243 | 119.9 | (50, 1) | 2.221048 | 182.1 |
| 1 | (50, 2) | 2.572474 | 213.7 | (50, 2) | 2.572166 | 103.6 | (50, 2) | 2.032668 | 152.7 | (50, 2) | 2.188085 | 142.3 | (50, 2) | 2.221174 | 153.3 |
| 2 | (50, 5) | 2.572232 | 164.6 | (50, 5) | 2.572166 | 102.0 | (50, 5) | 2.147977 | 117.4 | (50, 5) | 2.243236 | 141.4 | (50, 5) | 1.978642 | 136.5 |
| 3 | (50, 10) | 2.571771 | 163.2 | (50, 10) | 2.572166 | 102.0 | (50, 10) | 2.275386 | 111.1 | (50, 10) | 2.545728 | 102.1 | (50, 10) | 2.213248 | 152.8 |
| 4 | (100, 1) | 2.572753 | 240.2 | (100, 1) | 2.377773 | 135.6 | (100, 1) | 2.379755 | 145.7 | (100, 1) | 2.472010 | 121.0 | (100, 1) | 2.313324 | 152.3 |
| 5 | (100, 2) | 2.572485 | 218.9 | (100, 2) | 2.409922 | 123.5 | (100, 2) | 2.276762 | 136.4 | (100, 2) | 2.521331 | 104.5 | (100, 2) | 2.441731 | 110.3 |
| 6 | (100, 5) | 2.572703 | 233.9 | (100, 5) | 2.243520 | 125.1 | (100, 5) | 2.415446 | 121.0 | (100, 5) | 2.439718 | 117.2 | (100, 5) | 2.361770 | 155.2 |
| 7 | (100, 10) | 2.572609 | 239.0 | (100, 10) | 2.426253 | 134.2 | (100, 10) | 2.546262 | 103.0 | (100, 10) | 2.519614 | 103.0 | (100, 10) | 2.521963 | 102.6 |
| 8 | (150, 1) | 2.572839 | 260.1 | (150, 1) | 2.505649 | 107.6 | (150, 1) | 2.473216 | 141.9 | (150, 1) | 2.443675 | 139.2 | (150, 1) | 2.409164 | 139.8 |
| 9 | (150, 2) | 2.572803 | 246.0 | (150, 2) | 2.537076 | 115.3 | (150, 2) | 2.433891 | 135.9 | (150, 2) | 2.454604 | 122.3 | (150, 2) | 2.435611 | 123.9 |
| 10 | (150, 5) | 2.572726 | 210.4 | (150, 5) | 2.549279 | 108.2 | (150, 5) | 2.414072 | 112.4 | (150, 5) | 2.464903 | 102.9 | (150, 5) | 2.430410 | 120.5 |
| 11 | (150, 10) | 2.572783 | 238.6 | (150, 10) | 2.564389 | 102.2 | (150, 10) | 2.439341 | 128.3 | (150, 10) | 2.468528 | 111.4 | (150, 10) | 2.558271 | 116.6 |
| 12 | (200, 1) | 2.572839 | 217.2 | (200, 1) | 2.556187 | 123.6 | (200, 1) | 2.531470 | 114.4 | (200, 1) | 2.408965 | 156.6 | (200, 1) | 2.540959 | 130.8 |
| 13 | (200, 2) | 2.572836 | 293.8 | (200, 2) | 2.560163 | 105.3 | (200, 2) | 2.560042 | 110.3 | (200, 2) | 2.445352 | 126.4 | (200, 2) | 2.542073 | 124.7 |
| 14 | (200, 5) | 2.572831 | 248.7 | (200, 5) | 2.572617 | 103.5 | (200, 5) | 2.511060 | 107.6 | (200, 5) | 2.526423 | 127.1 | (200, 5) | 2.537514 | 103.7 |
| 15 | (200, 10) | 2.572783 | 233.6 | (200, 10) | 2.572617 | 103.0 | (200, 10) | 2.560292 | 103.9 | (200, 10) | 2.537441 | 102.6 | (200, 10) | 2.548734 | 107.6 |
def popsize_influence(dims=None):
plt.rcParams["figure.figsize"] = (20,10)
plt.rcParams.update({'font.size': 18, 'font.family': 'Tahoma'})
for popsize in range(50, 250, 50):
results = {}
iters = []
if not dims:
population = generate_population(popsize)
else:
population = generate_population(popsize, dims)
for tournament_size in [1, 2, 5, 10]:
if not dims:
res = evolve(population, popsize, tournament_size, change_dim=True)
else:
res = evolve(population, popsize, tournament_size)
results[str(tournament_size)] = res
iters.append(len(res))
for size, res in results.items():
plt.plot(res, label=f"Tournament size: {size}")
plt.title(f"Population size of {popsize}")
plt.xlabel(f"No. of generations, total: {max(iters)}")
plt.ylabel("Fitness value")
plt.legend()
plt.xlim(0, 20)
plt.show()
popsize_influence()
for dim in range(2, 6):
popsize_influence(dim)
def tournament_size_influence(dims=None):
plt.rcParams["figure.figsize"] = (20,10)
plt.rcParams.update({'font.size': 18, 'font.family': 'Tahoma'})
for tournament_size in [1, 2, 5, 10]:
results = {}
iters = []
for popsize in range(50, 250, 50):
if not dims:
population = generate_population(popsize)
else:
population = generate_population(popsize, dims)
if not dims:
res = evolve(population, popsize, tournament_size, change_dim=True)
else:
res = evolve(population, popsize, tournament_size)
results[str(popsize)] = res
iters.append(len(res))
for popsize, res in results.items():
plt.plot(res, label=f"Population size: {popsize}")
plt.title(f"Tournament size of {tournament_size}")
plt.xlabel(f"No. of generations, total: {max(iters)}")
plt.ylabel("Fitness value")
plt.legend()
plt.xlim(0, 20)
plt.show()
tournament_size_influence()
for dim in range(2, 6):
tournament_size_influence(dim)